Programmable logic devices (PLDs) exist as a well-known type of integrated circuit (IC) that may be programmed by a user to perform specified logic functions. There are different types of programmable logic devices, such as programmable logic arrays (PLAs) and complex programmable logic devices (CPLDs). One type of programmable logic device is called a field programmable gate array (FPGA).
An FPGA conventionally includes an array of configurable logic blocks (CLBs) surrounded by a ring of programmable input/output blocks (IOBs). The CLBs and IOBs are interconnected by a programmable interconnect structure. The CLBs, IOBs, and interconnect structure are conventionally programmed by loading a stream of configuration data (bit stream) into internal configuration memory cells that define how the CLBs, IOBs, and interconnect structure are configured. Additionally, an FPGA may include: embedded memory, such as block random access memories (BRAMs); one or more microprocessors, sometimes referred to as embedded cores; digital clock managers (DCMs); and low voltage differential signaling (LVDS) input/output (I/O) interfaces.
The combination of components on an FPGA may be used for system-level integration, sometimes referred to as “system-on-a-chip” (SoC). Accordingly, system-level integration with FPGAs is desirable for flexibility and efficiency.